import java.util.Arrays;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 沈明月
 * Date: 2022-11-07
 * Time: 15:51
 */
public class TestEight {
//存在连续三个奇数的数组：
//给你一个整数数组 arr，请你判断数组中是否存在连续三个元素都是奇数的情况：
//如果存在，请返回 true ；否则，返回 false 。

//示例 1：
//输入：arr = [2,6,4,1]
//输出：false
//解释：不存在连续三个元素都是奇数的情况。

//示例 2：
//输入：arr = [1,2,34,3,4,5,7,23,12]
//输出：true
//解释：存在连续三个元素都是奇数的情况，即 [5,7,23] 。

    //法一：把数组里所有的奇数的下标都用一个新的数组存放起来，如果在新的数组里，存放的下标里有三个连续的数字即为true.
    public static boolean func1(int [] array){
        int [] ret = new int [array.length];
        //把所有奇数都收集起来：
        int k = 0;
        boolean isFlg = false;
        for (int i = 0; i < array.length-1; i++) {
            if(array[i]%2 != 0){
                ret [k] = i;
                k++;
            }
        }
        //开始验证是否存在三个下标是相邻的三个数：i,i+1,i+2
        if(k < 2){
            return isFlg;
        }
        for (int i = 0; i <= k; i++) {
            if(2*ret[k+1] == (ret[k]+ret[k+2])){
                isFlg = true;
            }
        }
        return isFlg;
    }
    //法二：直接在这上面进行操作
    public static boolean func2(int [] array){
        boolean isFlg = false;
        for (int i = 0; i < array.length-2; i++) {
            if(array[i]%2 != 0){
                if((array[i+1]%2 != 0)&&(array[i+2]%2 != 0)){
                    isFlg = true;
                }
            }
        }
        return isFlg;
    }
    //法三：
    public boolean threeConsecutiveOdds(int[] array) {
        // 引入标志位记录连续出现奇数的个数
        int count = 0;
        for (int i = 0; i < array.length; i++) {
            if (isConsecutiveOdd(array[i])) {
                // 出现奇数，count ++;
                count ++;
                if (count == 3) {
                    // 出现连着三个奇数，返回true
                    return true;
                }
            }else {
                // 一旦碰到偶数，count重置
                count = 0;
            }
        }
        return false;
    }
    private boolean isConsecutiveOdd(int num) {
        return num % 2 != 0;
    }
        public static void main1(String[] args) {
        int [] array = new int []{1,2,34,3,4,5,7,23,12};
        int [] ret = new int []{2,6,4,1};
        boolean isFlg1 = func1(array);
        System.out.println(isFlg1);
        boolean isFlg2 = func2(ret);
        System.out.println(isFlg2);
    }
}
